<?php
/**
 * Журнал всего происходящего на сайте
 *
 * @author kingop
 */
class DatabaseObject_Logger extends DatabaseObject {
    public function __construct($db) {
        parent::__construct($db, 'logger', 'id');
        
        $this->add('note');
        $this->add('time');
    }
    
    public static function WriteLog($db, $note) {
        $item = new DatabaseObject_Logger($db);
        $item->note = $note;
        $item->time = date("Y-m-d H:i:s");
        
        $item->save();
    }
    
    public static function GetCount($db) {
        $select = self::_GetBaseQuery($db, array());
        $select->from(null, 'count(*)');

        return $db->fetchOne($select);
    }
    
    private static function _GetBaseQuery($db, $options) {
        // инициализация настроек
        $defaults = array();

        foreach ($defaults as $k => $v) {
            $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v;
        }

        // создание запроса на получение
        $select = $db->select();
        $select->from(array('p' => 'logger'), array());

        return $select;
    }
    
    public static function GetNotes($db, $options) {
        // инициализируем настройки
        $defaults = array(
            'offset' => 0,
            'limit' => 0,
            'order' => 'p.id'
        );

        foreach ($defaults as $k => $v) {
            $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v;
        }

        $select = self::_GetBaseQuery($db, $options);

        // поля для выборки
        $select->from(null, 'p.*');

        // зададим настройки
        if ($options['limit'] > 0)
            $select->limit($options['limit'], $options['offset']);
        
        if($options['where'])
            $select->where($options['where']);

        $select->order($options['order']);

        // получим данные из базы
        $data = $db->fetchAll($select);

        // сделаем из полученных записей объекты класса
        $notes = self::BuildMultiple($db, __CLASS__, $data);
        $notes_ids = array_keys($notes);

        if (count($notes_ids) == 0)
            return array();
        
        return $notes;
    }
}

?>
